<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>函数的增强</title>
</head>
<body>
<script>
    //默认参数
    function fn1(name='tom',age=17){
        console.log(name+','+age);
    }
    //rest参数 ...扩展运算符
    
    //箭头函数
    // es6 增加的简写函数的语法方式
    //只能简写函数表达式（匿名函数）
    function fn (a,b){ //普通函数，声明式函数 ，不能改写成箭头函数
        console.log('hello',a,b);
    }

   fn2= (a,b)=>{ //箭头函数
        console.log('hello',a,b);
    }
    fn2(1,2)

    let name ='shane';
    let age =12;
    const person ={
        name,
        age,
        fun:()=>{

        }
    }
    //箭头函数的特性
    //1.如果箭头函数的参数只有一个，那么括号可以省略
    //2.默认参数，括号不可以省略
    //3.在箭头函数中，如果只有一行代码且为return也就是回调函数，则大括号也可以省略

    //fn4 =(a=5)=>{
        //console.log(a);
    fn4 =a=>a
    
    fn4(3)
    console.log(fn4(3,5));

    //this 指代的是window对象
    console.log(this);
   
    //在匿名函数，function里面this指向函数的调用者
    //箭头函数中this指向的函数的声明处，通常指的是window对象
    let obj = {
        name:'Shane',
        run(){
            this.name='kitty'
            console.log(this);
        }
    }
    obj.run()
    console.log(obj);
</script>  
</body>
</html>